bitkeeper revision 1.1717 (42b3442b7kXKhXN5lvR9spIGT5LsYQ)
authoriap10@tetris.cl.cam.ac.uk <iap10@tetris.cl.cam.ac.uk>
Fri, 17 Jun 2005 21:44:11 +0000 (21:44 +0000)
committeriap10@tetris.cl.cam.ac.uk <iap10@tetris.cl.cam.ac.uk>
Fri, 17 Jun 2005 21:44:11 +0000 (21:44 +0000)
When xend starts, it fires off xcs.  If you're running on a slow
machine its possible that xcs started but xend didnt wait long
enough to notice.  The attached patch loops several times while
waiting for xcs to come up.  It seems to be working here while the
original is not (slow machine here).

From: Tim Newsham [newsham@lava.net]
Signed-off-by: ian@xensource.com
tools/misc/xend

index 768cd20f944c7bfb9b189848eedb32a8290a6942..06f5e660ec3585172a978bc674da8e98cff63a00 100644 (file)
@@ -86,9 +86,7 @@ def xcs_running():
     
 def start_xcs():
     if (not xcs_running()):
-        if os.fork():
-            time.sleep(0.1) # let xcs start
-        else:
+        if os.fork() == 0 :
             if not os.path.isdir(os.path.dirname(XCS_PATH)):
                 os.makedirs(os.path.dirname(XCS_PATH))
             try:
@@ -98,11 +96,15 @@ def start_xcs():
                 msg("Tried to start xcs, but failed. Is it installed?")
                 hline()
                 raise CheckError("couldn't start xcs")
-        if (not xcs_running()):
-            hline()
-            msg("Failed to start the control interface switch.")
-            hline()
-            raise CheckError("xcs not running")
+        for n in range(10) :
+            if (xcs_running()):
+                break
+            time.sleep(0.1)
+        else :
+                hline()
+                msg("Failed to start the control interface switch.")
+                hline()
+                raise CheckError("xcs not running")
             
 def stop_xcs():
     try: